home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / sparc / include / asm / pgalloc_64.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.7 KB  |  82 lines

  1. #ifndef _SPARC64_PGALLOC_H
  2. #define _SPARC64_PGALLOC_H
  3.  
  4. #include <linux/kernel.h>
  5. #include <linux/sched.h>
  6. #include <linux/mm.h>
  7. #include <linux/slab.h>
  8. #include <linux/quicklist.h>
  9.  
  10. #include <asm/spitfire.h>
  11. #include <asm/cpudata.h>
  12. #include <asm/cacheflush.h>
  13. #include <asm/page.h>
  14.  
  15. /* Page table allocation/freeing. */
  16.  
  17. static inline pgd_t *pgd_alloc(struct mm_struct *mm)
  18. {
  19.     return quicklist_alloc(0, GFP_KERNEL, NULL);
  20. }
  21.  
  22. static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
  23. {
  24.     quicklist_free(0, NULL, pgd);
  25. }
  26.  
  27. #define pud_populate(MM, PUD, PMD)    pud_set(PUD, PMD)
  28.  
  29. static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
  30. {
  31.     return quicklist_alloc(0, GFP_KERNEL, NULL);
  32. }
  33.  
  34. static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
  35. {
  36.     quicklist_free(0, NULL, pmd);
  37. }
  38.  
  39. static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
  40.                       unsigned long address)
  41. {
  42.     return quicklist_alloc(0, GFP_KERNEL, NULL);
  43. }
  44.  
  45. static inline pgtable_t pte_alloc_one(struct mm_struct *mm,
  46.                     unsigned long address)
  47. {
  48.     struct page *page;
  49.     void *pg;
  50.  
  51.     pg = quicklist_alloc(0, GFP_KERNEL, NULL);
  52.     if (!pg)
  53.         return NULL;
  54.     page = virt_to_page(pg);
  55.     pgtable_page_ctor(page);
  56.     return page;
  57. }
  58.  
  59. static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
  60. {
  61.     quicklist_free(0, NULL, pte);
  62. }
  63.  
  64. static inline void pte_free(struct mm_struct *mm, pgtable_t ptepage)
  65. {
  66.     pgtable_page_dtor(ptepage);
  67.     quicklist_free_page(0, NULL, ptepage);
  68. }
  69.  
  70.  
  71. #define pmd_populate_kernel(MM, PMD, PTE)    pmd_set(PMD, PTE)
  72. #define pmd_populate(MM,PMD,PTE_PAGE)        \
  73.     pmd_populate_kernel(MM,PMD,page_address(PTE_PAGE))
  74. #define pmd_pgtable(pmd) pmd_page(pmd)
  75.  
  76. static inline void check_pgt_cache(void)
  77. {
  78.     quicklist_trim(0, NULL, 25, 16);
  79. }
  80.  
  81. #endif /* _SPARC64_PGALLOC_H */
  82.